<?php
/**
 * 并发客户端调用
 *
 * @link https://www.php.net/manual/zh/class.yar-concurrent-client.php
 */
class Yar_Concurrent_Client {
    static $_callstack;
    static $_callback;
    static $_error_callback;

    /**
     * 注册一个并行的服务调用
     *
     * @param string $uri RPC 服务的 URI(http 或 tcp)
     * @param string $method 调用的服务名字(也就是服务方法名).
     * @param array|null $arguments 调用的参数.
     * @param callable|null $callback 回调函数, 在远程服务的返回到达的时候被Yar调用, 从而可以处理返回内容.
     * @param callable|null $error_callback
     * @param array|null $options
     * @return int|bool|null 唯一 ID， 可用于区分到底是那个调用的返回.
     * @link https://www.php.net/manual/zh/yar-concurrent-client.call.php
     */
    public static function call(string $uri, string $method, ?array $arguments = NULL, ?callable $callback = NULL, ?callable $error_callback = NULL, ?array $options = NULL):null|int|bool {}

    /**
     * 发送所有注册的并行调用
     *
     * @param callable|null $callback
     * @param callable|null $error_callback
     * @param array|null $options
     * @return bool|null
     * @link https://www.php.net/manual/zh/yar-concurrent-client.loop.php
     */
    public static function loop(?callable $callback = NULL, ?callable $error_callback = NULL, ?array $options = NULL):?bool {}

    /**
     * 清理所有注册的并行调用
     *
     * @return bool
     * @link https://www.php.net/manual/zh/yar-concurrent-client.reset.php
     */
    public static function reset():bool {}
}
